package com.xf.day06

import org.apache.hadoop.fs.{FileSystem, Path}
import org.apache.spark.SparkConf
import org.apache.spark.sql.{DataFrame, SparkSession}

object TestDataFrame2RDDMethod {
  def main(args: Array[String]): Unit = {

    val conf = new SparkConf()
      .setAppName("testDataFrame")
      .setMaster("local[*]")

    val spark = SparkSession
      .builder()
      .config(conf)
      .getOrCreate()

    val df1 :DataFrame = spark
      .read
      .format("json")
      .load("D:\\workRecord\\spark_project20250924\\data\\student1.json")

    // df1.printSchema()
    println("=======================================>")

    // 删除已存在的输出目录
    val outputPath = "D:/workRecord/spark_project20250924/data/student_result"
    val hadoopConf = spark.sparkContext.hadoopConfiguration
    val fs = FileSystem.get(hadoopConf)
    val path = new Path(outputPath)

    if (fs.exists(path)) {
      fs.delete(path, true) // true 表示递归删除
      println(s"已删除已存在的目录: $outputPath")
    }

    // df1.show()
    df1.rdd.saveAsTextFile(outputPath)
    // df1.rdd.saveAsTextFile("file:///D:\\workRecord\\spark_project20250924\\data\\student_result")
    spark.stop()

  }

}

/**
 * root
 * |-- Java程序设计: long (nullable = true)
 * |-- oracle: long (nullable = true)
 * |-- 姓名: string (nullable = true)
 * |-- 学号: string (nullable = true)
 * |-- 数据结构: long (nullable = true)
 *
 * =======================================>
 *
 * +------------+------+----+--------+--------+
 * |Java程序设计|oracle|姓名|    学号|数据结构|
 * +------------+------+----+--------+--------+
 * |          92|    78|张伟|20230001|      85|
 * |          88|    85|李娜|20230002|      90|
 * |          84|    80|王强|20230003|      78|
 * |          95|    72|刘洋|20230004|      93|
 * |          90|    88|陈静|20230005|      87|
 * |          82|    70|黄磊|20230006|      76|
 * |          89|    83|赵敏|20230007|      91|
 * |          94|    77|周杰|20230008|      84|
 * |          86|    90|吴芳|20230009|      88|
 * |          81|    75|徐磊|20230010|      79|
 * |          93|    86|孙丽|20230011|      92|
 * |          87|    74|胡波|20230012|      81|
 * |          91|    82|郭婷|20230013|      89|
 * |          79|    68|何勇|20230014|      77|
 * |          96|    91|高娟|20230015|      94|
 * |          85|    76|林峰|20230016|      83|
 * |          90|    80|罗鑫|20230017|      86|
 * |          83|    71|郑凯|20230018|      75|
 * |          94|    87|谢娜|20230019|      90|
 * |          88|    79|宋佳|20230020|      82|
 * +------------+------+----+--------+--------+
 *
 *
 * =======================================>
 *    保存到本地文件后，得到的结果内容为:
 *   student_result/          # 输出目录
 *   ├── .SUCCESS.crc     # 校验文件（标记作业成功完成）
 *   ├── .part-00000.crc  # 校验文件（数据文件的校验）
 *   ├── _SUCCESS         # 成功标记文件
 *   └── part-00000       # 实际数据文件
 *
 */
